deploy: Fix leaks in parsing /etc/os-release
authorColin Walters <walters@verbum.org>
Sun, 24 Jul 2016 19:40:49 +0000 (15:40 -0400)
committerAtomic Bot <atomic-devel@projectatomic.io>
Thu, 28 Jul 2016 10:10:17 +0000 (10:10 +0000)
This one is a bit subtle; we're generating a hash that contains
pointers to the strings we parsed, so we need to carefully track
ownership.

Closes: #410
Approved by: giuseppe

src/libostree/ostree-sysroot-deploy.c

index cc1a1faa667da71ad03817feb0486b91974ec3a5..246a34129b51a248186ac9dac4c677cf73b9ab9e 100644 (file)
@@ -1244,13 +1244,13 @@ static GHashTable *
 parse_os_release (const char *contents,
                   const char *split)
 {
-  char **lines = g_strsplit (contents, split, -1);
+  g_autofree char **lines = g_strsplit (contents, split, -1);
   char **iter;
   GHashTable *ret = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
 
   for (iter = lines; *iter; iter++)
     {
-      char *line = *iter;
+      g_autofree char *line = *iter;
       char *eq;
       const char *quotedval;
       char *val;
@@ -1268,7 +1268,7 @@ parse_os_release (const char *contents,
       if (!val)
         continue;
       
-      g_hash_table_insert (ret, line, val);
+      g_hash_table_insert (ret, g_steal_pointer (&line), val);
     }
 
   return ret;